package de.uebungen.grabo;

import javax.swing.JFrame;

import de.fhwgt.dionarap.controller.DionaRapController;
import de.fhwgt.dionarap.model.data.DionaRapModel;
import de.fhwgt.dionarap.model.objects.AbstractPawn;


@SuppressWarnings("serial")
public class Hauptfenster extends JFrame {
	
	//Attribut der Klasse Hauptfenster
	//Erzeugt eine Instanz des Navigatorklasse
	private Navigator navigator = new Navigator(this);
	private DionaRapModel model = new DionaRapModel();
	private DionaRapController controller = new DionaRapController(model);
	private Spielfeld spielfeld = new Spielfeld();
	
	public Hauptfenster() {
		
		//Setzt Fensternamen auf "DionaRap"
		super("DionaRap");
		
		//Verhalten beim schließen des Fensters (rotes X)
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		
		//Erzeugt eine Instanz der Klasse Spielfeld und fügt diese hinzu
		spielfeld.drawElements(model.getAllPawns());
		this.add(spielfeld);		
		
		//Verhindert, dass das Fenster in der Groesse verändert werden kann
		this.setResizable(false);
		
		//Macht den Navigator sichtbar
		this.navigator.setVisible(true);
		
		//Macht das Hauptfenster sichtbar
		this.setVisible(true);
		
		//Passt die Groesse des Fensters an den Inhalt an
		this.pack();
		
		this.addComponentListener(new ListenerFenster(this.navigator));
		this.addKeyListener(new ListenerNumPad());

		this.model.addModelChangedEventListener(new ListenerModel(this));

		
	}
	
	public static void main(String[] args) {
		new Hauptfenster();
	}
	
	public DionaRapController getController()
	{
		return this.controller;
	}

	public void updateStatus() {
		// TODO Auto-generated method stub
		AbstractPawn[] pawns = this.model.getAllPawns();
		this.spielfeld.clear();
		this.spielfeld.drawElements(pawns);
		}
}
